home *** CD-ROM | disk | FTP | other *** search
- //
- // Module name: Quickapp.cod
- // Description: Quick application template for dBASE IV
- //
-
- Quick Application Template
- --------------------------
- Version 2.0.c
- Borland International (c) 1987, 1988, 1989, 1990, 1991, 1992, 1993
- {
- include "applctn.def" // Applicaton selectors
- include "builtin.def" // Builtin Functions
-
-
- if getenv("dtl_debug") then
- debug(2)
- breakpoint( pick_debug )
- endif
-
- var bnl_formname, // Name of BNL file to newframe if argument() has value
- arg_list;
-
- arg_list = alltrim(argument())
-
- if arg_list != "" then
- bnl_formname = token( ",", arg_list, 1 )
- if !newframe( bnl_formname ) then
- return -1;
- endif
- endif
-
- // Check menu type
- if MENU_TYPE != app then
- pause(app_class)
- goto NoGen;
- endif
- //
- // Enum string constants for international translation
- //
- enum pack_dbf1 = "Packing database ",
- pack_dbf2 = " to REMOVE records marked for deletion...",
- set_msg1 = "Appending records to file ",
- set_msg2 = "Editing file ",
- set_msg3 = "Browsing file ",
- set_msg4 = "Pick an option to locate a record or <ESC> for default",
- set_msg5 = "Printing report ",
- set_msg6 = "Printing labels",
- quick_bar1= " Add Information", quick_msg1 = "Add records to database ",
- quick_bar2= " Change Information", quick_msg2 = "Edit records in database ",
- quick_bar3= " Browse Information", quick_msg3 = "Browse database ",
- quick_bar4= " Discard Marked Records ", quick_msg4 = "Purge deleted records in database ",
- quick_bar5= " Print Report", quick_msg5 = "Run report form ",
- quick_bar6= " Mailing Labels", quick_msg6 = "Run label form ",
- quick_bar7= " Reindex Database", quick_msg7 = "Reindex database ",
- quick_bar8= " Exit From ", quick_msg8 = "Exit program to dBASE",
- prntchk_bar1= " Send to...",
- prntchk_bar3= " Screen ", prntchk_msg3= "Screen only" ,
- prntchk_bar4= " Printer ", prntchk_msg4= "Printer LPT1:",
- prntchk_bar5= " Label Sample ", prntchk_msg5= "Printer LPT1: with Sample label",
- prntchk_bar6= " Return", prntchk_msg6= "Return to Main Menu",
- reindex_dbf = "Reindexing database ",
- ready_printer = "Please ready your printer or",
- press_esc = " press ESC to cancel",
- error_occured = "[Error occurred on line ]+LTRIM(STR(LINE())) +[ of procedure ]+Program()",
- ;
- //
- // End string constants for international translation
- //
- // Declare variables
- var quickapp, barcnt, rptchoice, lblchoice, ndxchoice, file, crlf, x, color,
- ask_user, strng, author, copyright, dbVersion, default_drv, temp,
- scrn_size, display // Type of display
- ;
-
- // Grab default drive from dBASE
- // See bottom of Builtin.def for numset & strset enum's
- default_drv = strset(_defdrive);
-
- if filedrive(menu_name) or !default_drv then
- quickapp = alltrim(menu_name);
- else
- quickapp = default_drv + ":" + alltrim(menu_name);
- endif
- // quickapp = upper(quickapp);
-
- // Assign default values to some of the variables
- barcnt = 4;
- crlf = chr(10);
- author = Appl_Authr;
- copyright = Appl_cpyrt;
- dbVersion = Appl_Versn;
- screen_size();
- scrn_size = scrn_size + 3;
-
- // Check to see if file exists and safety is on
- if fileexist(quickapp+".prg") and numset(_safety) then
- do while not at(upper(ask_user),"YN")
- ask_user = askuser("Application "+quickapp+".prg already exists...Overwrite (Y/N)","N",1);
- enddo
- if upper(ask_user) == "N" then
- pause(gen_request + any_key)
- goto NoGen;
- endif
- endif
- //
- //----------------------------------
- //Create Quickapp main program
- //----------------------------------
- //
- if not create(quickapp+".prg") then
- pause(fileroot(quickapp)+".prg" + read_only + any_key)
- goto nogen;
- endif
-
- print(replicate("*",80)+crlf);
- }
- * Program......: {quickapp}
- {include "as_headr.cod";}
- * Notes........:
- {print(replicate("*",80)+crlf);}
-
- SET CONSOLE OFF
- IF TYPE("gn_apgen") = "U" && We were not called from another APGEN program
- CLEAR ALL
- CLEAR WINDOW
- CLOSE DATABASE
- gn_apgen = 1
- ELSE
- gn_apgen = gn_apgen + 1
- PRIVATE gc_bell, gc_carry, gc_clock, gc_century, gc_confirm, gc_deli,;
- gc_escape, gc_safety, gc_status, gc_score, gc_talk, gc_color,;
- gc_proc
- ENDIF
-
- *-- Window for pause message box (ON ERROR)
- DEFINE WINDOW Pause FROM 15,00 TO 19,79 DOUBLE
- ON ERROR DO PAUSE WITH {error_occured}
- ON KEY LABEL F1 DO quickhlp
-
- *-- Store initial SETs to variables
- gc_bell =SET("BELL")
- gc_carry =SET("CARRY")
- gc_clock =SET("CLOCK")
- gc_century=SET("CENTURY")
- gc_confirm=SET("CONFIRM")
- gc_cursor =SET("CURSOR")
- gc_deli =SET("DELIMITERS")
- gc_escape =SET("ESCAPE")
- gc_proc =SET("PROCEDURE")
- gc_safety =SET("SAFETY")
- gc_status =SET("STATUS")
- gc_score =SET("SCOREBOARD")
- gc_talk =SET("TALK")
-
- SET CLOCK OFF
- CLEAR
- SET CONSOLE ON
-
- *-- Sets for application
- SET BELL {if Set_Bell then}OFF{else}ON{endif}
- {if Set_BellFr and Set_BellDr then}
- SET BELL TO {Set_BellFr},{Set_BellDr}
- {endif}
- SET CARRY {if Set_Carry then}ON{else}OFF{endif}
- SET CENTURY {if Set_Centry then}ON{else}OFF{endif}
- SET CONFIRM {if Set_Confrm then}ON{else}OFF{endif}
- SET CURSOR OFF
- SET DELIMITERS TO \
- {if not AT(CHR(34),Set_DelChr) then}"{Set_DelChr}"
- { goto deliok;
- endif
- if not AT("'",Set_DelChr) then}'{Set_DelChr}'
- { goto deliok;
- endif
- if not AT("[",Set_DelChr) or not AT("]",Set_DelChr) then}[{Set_DelChr}]
- { goto deliok;
- endif
- }
- ""
- {deliok:}
- SET DELIMITER {if Set_Delim then}ON{else}OFF{endif}
- SET ESCAPE {if Set_Escape then}OFF{else}ON{endif}
- SET SAFETY {if Set_Safety then}OFF{else}ON{endif}
- SET SCOREBOARD OFF
- SET STATUS OFF
- SET TALK OFF
- //
- {if Run_Drive then}
- SET DEFAULT TO {UPPER(Run_Drive)}:
- {endif}
- {if Run_Path then}
- SET PATH TO {Run_Path}
- {endif}
-
- *-- Set global variables
- gn_barv = 0{tabto(30)}&& Initialize bar value variable
- gn_error = 0{tabto(30)}&& Variable to store error() number
- gn_send = 0{tabto(30)}&& Return variable from popup
- gc_brdr = "2"{tabto(30)}&& Border style for menu box - See Procedure
- lc_heading = "{if quick_hdng then
- alltrim(Quick_Hdng)
- else
- fileroot(Upper(quickapp))
- endif}" && Menu heading string
-
- gl_color = ISCOLOR()
- gc_scope = ""
- {if Disp_Sign then}
- // Display Signon Banner
- SET ESCAPE OFF
-
- *-- Signon Banner
- @ {row1()},{col1()} TO {row2()},{col2()} \
- { case Mnu_Border of}
- { 0: // Panel}
- PANEL \
- { 1: // Single}
- \
- { 2: // Double}
- DOUBLE \
- { endcase}
-
- { foreach text_element}
- @ {row1()+Row_Positn},{col1()+Col_Positn} SAY "{Text_Item}"
- { next}
- IF gl_color
- @ {row1()+1},{col1()+1} FILL TO {row2()-1},{col2()-1}
- ENDIF
- @ IIF("43" $ SET("DISPLAY"),42,24),30 \
- SAY "Press any key ..."
- SET CONSOLE OFF && For mouse click recognition
- WAIT
- SET CONSOLE ON
- CLEAR
-
- {endif}
- SET ESCAPE {if Set_Escape then}OFF{else}ON{endif}
- SET STATUS ON
-
- //
-
- {dBFOpen(Quick_DBF, Quick_NDX, Quick_Ordr);}
-
- *-- Define the main popup menu for Quickapp
- SET BORDER TO DOUBLE
- DEFINE POPUP quick FROM 7,27
- DEFINE BAR 1 OF quick PROMPT "{quick_bar1}" MESSAGE "{quick_msg1 + Quick_DBF}"
- DEFINE BAR 2 OF quick PROMPT "{quick_bar2}" MESSAGE "{quick_msg2 + Quick_DBF}"
- DEFINE BAR 3 OF quick PROMPT "{quick_bar3}" MESSAGE "{quick_msg3 + Quick_DBF}"
- DEFINE BAR 4 OF quick PROMPT "{quick_bar4}" MESSAGE "{quick_msg4 + Quick_DBF}"
- { if Quick_FRM then barcnt=barcnt+1; rptchoice=barcnt;}
- DEFINE BAR {barcnt} OF quick PROMPT "{quick_bar5}" MESSAGE "{quick_msg5 + Quick_FRM}"
- { endif
- if Quick_LBL then barcnt=barcnt+1; lblchoice=barcnt;}
- DEFINE BAR {barcnt} OF quick PROMPT "{quick_bar6}" MESSAGE "{quick_msg6 + Quick_LBL}"
- { endif
- if Quick_NDX or Quick_Ordr then barcnt=barcnt+1; ndxchoice=barcnt;}
- DEFINE BAR {barcnt} OF quick PROMPT "{quick_bar7}" MESSAGE "{quick_msg7 + Quick_DBF}"
- { endif
- barcnt=barcnt+1;
- strng=fileroot(quickapp);
- strng=upper(substr(strng,1,1))+lower(substr(strng,2,7));}
- DEFINE BAR {barcnt} OF quick PROMPT "{quick_bar8 + strng}" MESSAGE "{quick_msg8}"
- ON SELECTION POPUP quick DO Action WITH BAR()
-
- {if Quick_LBL or Quick_FRM then}
- *-- Define the popup menu for print redirection
- DEFINE POPUP prntchk FROM 10,55
- DEFINE BAR 1 OF prntchk PROMPT "{prntchk_bar1}" SKIP
- DEFINE BAR 2 OF prntchk PROMPT REPLICATE(CHR(196),14) SKIP
- DEFINE BAR 3 OF prntchk PROMPT "{prntchk_bar3}" MESSAGE "{prntchk_msg3}"
- DEFINE BAR 4 OF prntchk PROMPT "{prntchk_bar4}" MESSAGE "{prntchk_msg4}"
- DEFINE BAR 5 OF prntchk PROMPT "{prntchk_bar5}" MESSAGE "{prntchk_msg5}" \
- SKIP{if Quick_LBL} FOR gn_barv <> {lblchoice}{endif}
- DEFINE BAR 6 OF prntchk PROMPT "{prntchk_bar6}" MESSAGE "{prntchk_msg6}"
- ON SELECTION POPUP prntchk DEACTIVATE POPUP
- {endif}
-
- *-- Window to cover work surface during edit, append, etc.
- DEFINE WINDOW work FROM 0,0 TO 21,79 NONE
-
- *-- Window for area below menu heading & for running reports/labels in
- DEFINE WINDOW desktop FROM 4,0 TO 21,79 NONE
-
- DEFINE WINDOW printemp FROM 10,25 TO 15,56
-
- *-- Display heading centered on the screen.
- DO menubox WITH lc_heading
-
- *-- Show the menu so we don't get a flash if the user hits arrow keys or ESC
- SHOW POPUP quick
- SAVE SCREEN TO quick
- *-- Display Quickapp menu centered on the screen.
- DO WHILE gn_barv <> {barcnt} && Prevent user from exiting with arrow keys or ESC
- ACTIVATE POPUP quick
- ENDDO
-
- * Restore SET environment the best we can
- SET BELL &gc_bell.
- SET CARRY &gc_carry.
- SET CLOCK TO
- SET CLOCK &gc_clock.
- SET CENTURY &gc_century.
- SET CONFIRM &gc_confirm.
- SET CURSOR &gc_cursor.
- SET DELIMITERS &gc_deli.
- SET ESCAPE &gc_escape.
- SET FORMAT TO
- SET PROCEDURE TO (gc_proc)
- SET STATUS &gc_status.
- SET SAFETY &gc_safety.
- SET SCORE &gc_score.
- SET TALK &gc_talk.
-
- IF gn_apgen = 1 && We were not called from another APGEN program
- CLEAR WINDOW
- CLEAR POPUP
- CLEAR ALL
- CLOSE DATABASE
- ELSE
- RELEASE WINDOWS work, desktop
- RELEASE SCREEN quick
- RELEASE POPUP quick
- gn_apgen = gn_apgen - 1
- ENDIF
- ON ERROR
- ON KEY LABEL F1
- RETURN
- * EOP: {Quickapp}.prg
-
- //
- //-------------------------------------------------------------------------
- // Create Quickapp procedure file
- // Since the dBASE compiler does not care that their are procedures in the
- // same file as the program we tack the procedures onto the bottom.
- //-------------------------------------------------------------------------
- //
- {print(replicate("*",80)+crlf);}
- * Procedures...: {quickapp}.Prc
- {include "as_headr.cod";}
- * Notes........:
- {print(replicate("*",80)+crlf);}
-
- *-- Here is a sample procedure file to show the power of procdures.
- *-- This example - Menubox displays a menu heading box with a centered heading.
- PROCEDURE MenuBox
- PARAMETER lc_m_name
- *-- Parameter lc_m_name - is the title variable for the menu
- PRIVATE cInfo, cBox
- cInfo = ColorChk( "I" )
- cBox = ColorChk( "B" )
-
- SET CLOCK OFF
- @ 1,0 FILL TO 2,79 COLOR &cInfo
- DO CASE
- CASE gc_brdr = "0"
- @ 1,0 CLEAR TO 3,79
- CASE gc_brdr = "1"
- @ 1,0 TO 3,79
- CASE gc_brdr = "2"
- @ 1,0 TO 3,79 DOUBLE COLOR &cBox
- ENDCASE
- SET CLOCK TO 2,68
- @ 2,1 SAY SUBSTR(CDOW(DATE()),1,3)+'. '+DTOC(DATE())+' ' COLOR &cInfo
- // Because of the length of the heading in the generator I am using 41 so that
- // the date display does not touch the heading.
- @ 2,41 - (LEN(lc_m_name)/2) SAY lc_m_name COLOR &cInfo
- RETURN
- *-- EOP: MenuBox
-
-
- FUNCTION ColorChk
- PARAMETERS pc_WhichCo
- *---------------------------------------------------------------------
- * DESCRIPTION
- * _ColorChk() returns a string representing one of eight
- * possible color attribute values.
- *---------------------------------------------------------------------
-
- PRIVATE lc_colattr, lc_whichco, ln_count, ln_stop_at, lc_attrib
-
- lc_whichco = UPPER(LEFT(pc_whichco,1))
- lc_attrib = SET("ATTRIBUTE")
-
- IF lc_whichco $ "MTBIF"
- lc_colattr = SUBSTR(lc_attrib, AT("&", lc_attrib) + 2)
- ELSE
- lc_colattr = LEFT(lc_attrib, AT("&", lc_attrib) - 2)
- ENDIF
-
- DO CASE
- CASE lc_whichco = "F"
- ln_stop_at = 4
- CASE lc_whichco = "I"
- ln_stop_at = 3
- CASE lc_whichco $ "BP"
- ln_stop_at = 2
- CASE lc_whichco $ "TH"
- ln_stop_at = 1
- OTHERWISE
- ln_stop_at = 0
- ENDCASE
-
- ln_count = 1
-
- DO WHILE m->ln_count <= m->ln_stop_at
- lc_colattr = SUBSTR(m->lc_colattr, AT(",", m->lc_colattr) + 1)
- ln_count = m->ln_count + 1
- ENDDO
-
- RETURN IIF("," $ lc_colattr, ;
- LEFT(lc_colattr, AT(",", lc_colattr) - 1), ;
- lc_colattr ;
- )
- *-- EOF: ColorChk( pc_WhichCo )
-
-
- PROCEDURE get_sele
- *-- Get the user selection & store BAR into variable
- gn_send = BAR() && Variable for print testing
- DEACTIVATE POPUP
- RETURN
-
- PROCEDURE Action
- PARAMETERS bar
- *-- Get the user selection & store BAR into variable
- gn_barv = bar
- lc_toprnt=''
- SET MESSAGE TO
- IF LTRIM( STR( gn_barv)) $ "123"
- SET CURSOR ON
- {if Quick_FMT then}
- *-- Set format file {Quick_FMT} for edit/append/browse
- SET FORMAT TO {Quick_FMT}
- {endif}
- ENDIF
- DO CASE
- CASE gn_barv = 1
- *-- Add information
- SET MESSAGE TO '{set_msg1 + Quick_DBF}'
- APPEND
- CASE gn_barv = 2
- *-- Change information
- SET MESSAGE TO '{set_msg2 + Quick_DBF}'
- EDIT
- CASE gn_barv = 3
- *-- Browse information
- SET MESSAGE TO '{set_msg3 + Quick_DBF}'
- BROWSE {if Quick_FMT then}FORMAT {endif}
- CASE gn_barv = 4
- *-- Remove information (Pack file {lower(Quick_DBF)})
- ACTIVATE WINDOW desktop
- @ 2,0 SAY "{pack_dbf1 + Quick_DBF + pack_dbf2}"
- @ 3,0
- SET TALK ON
- PACK
- GO TOP
- ?
- WAIT
- SET TALK OFF
- DEACTIVATE WINDOW desktop
- { if Quick_FRM}
- CASE gn_barv = {rptchoice}
- *-- Run report form {lower(Quick_FRM)}
- SET MESSAGE TO '{set_msg4}'
- ACTIVATE WINDOW work
- gn_recno = RECNO()
- DO position
- DEACTIVATE WINDOW work
- STORE 0 TO gn_send, gn_pkey
- ACTIVATE POPUP prntchk
- gn_send = BAR()
- IF gn_send = 4
- lc_toprnt = 'TO PRINT'
- ON ERROR DO prntrtry
- ENDIF
- IF gn_send <> 6 .AND. gn_send <> 0
- SET MESSAGE TO '{set_msg5 + Quick_FRM}'
- ACTIVATE WINDOW desktop
- SET ESCAPE ON
- REPORT FORM {Quick_FRM} &gc_scope. &lc_toprnt.
- IF gn_pkey <> 27
- WAIT
- ENDIF
- SET ESCAPE {if Set_Escape then}OFF{else}ON{endif}
- DEACTIVATE WINDOW desktop
- ENDIF
- GOTO gn_recno
- ON ERROR DO PAUSE WITH {error_occured}
- { endif
- if Quick_LBL}
- CASE gn_barv = {lblchoice}
- *-- Run label form {lower(Quick_LBL)}
- SET MESSAGE TO '{set_msg4}'
- ACTIVATE WINDOW work
- gn_recno = RECNO()
- DO position
- DEACTIVATE WINDOW work
- STORE 0 TO gn_send, gn_pkey
- ACTIVATE POPUP prntchk
- gn_send = BAR()
- DO CASE
- CASE gn_send = 4
- lc_toprnt = 'TO PRINT'
- CASE gn_send = 5
- lc_toprnt = 'TO PRINT SAMPLE'
- ENDCASE
- IF gn_send <> 6 .AND. gn_send <> 0
- SET MESSAGE TO '{set_msg6}'
- ACTIVATE WINDOW desktop
- SET ESCAPE ON
- ON ERROR DO prntrtry
- LABEL FORM {Quick_LBL} &gc_scope. &lc_toprnt.
- IF gn_pkey <> 27
- WAIT
- ENDIF
- SET ESCAPE {if Set_Escape then}OFF{else}ON{endif}
- DEACTIVATE WINDOW desktop
- ENDIF
- GOTO gn_recno
- ON ERROR DO PAUSE WITH {error_occured}
- { endif
- if Quick_NDX or Quick_Ordr}
- CASE gn_barv = {ndxchoice}
- *-- Reindex {lower(Quick_DBF)}
- ACTIVATE WINDOW desktop
- @ 3,0 SAY "{reindex_dbf + Quick_DBF + "..."}"
- @ 4,0
- SET TALK ON
- REINDEX
- GO TOP
- ?
- WAIT
- SET TALK OFF
- DEACTIVATE WINDOW desktop
- { endif}
- CASE gn_barv = {barcnt}
- DEACTIVATE POPUP
- ENDCASE
- SET MESSAGE TO
- SET CURSOR OFF
- {if Quick_FMT then}
- IF gc_status = "OFF"
- SET STATUS ON
- ENDIF
- SET FORMAT TO
- {endif}
- RESTORE SCREEN FROM quick
- RETURN
-
- {include "as_pause.cod"}
-
- PROCEDURE quickhlp
- *-- If you want to include help for a quickapp uncomment the lines below and
- *-- put your help @ say's into the case statements
- *ACTIVATE WINDOW desktop
- *CLEAR
- DO CASE
- {for temp = 1 to barcnt}
- CASE BAR() = {temp}
- {next}
- ENDCASE
- *WAIT
- *DEACTIVATE WINDOW desktop
- RETURN
-
- {if Quick_LBL or Quick_FRM then
- include "as_posit.cod";}
-
- PROCEDURE prntrtry
- PRIVATE lc_escape
- lc_escape = SET("ESCAPE")
- IF .NOT. PRINTSTATUS()
- IF lc_escape = "ON"
- SET ESCAPE OFF
- ENDIF
- gn_pkey = 0
- ACTIVATE WINDOW printemp
- @ 1,0 SAY "{ready_printer}"
- @ 2,0 SAY "{press_esc}"
- DO WHILE ( .NOT. PRINTSTATUS()) .AND. gn_pkey <> 27
- gn_pkey = INKEY()
- ENDDO
- DEACTIVATE WINDOW printemp
- SET ESCAPE &lc_escape.
- IF gn_pkey <> 27
- RETRY
- ENDIF
- ENDIF
- RETURN
- { endif}
-
- *-- EOF: {quickapp}.prg
- {pause(gen_complete + any_key);
- fileerase(quickapp+".dbo");
- NoGen:
- return 0;
- //
- //-------------------------------
- // End of quickapp
- // User defined functions include
- //-------------------------------
- //
- define dbfOpen(mdbf,mndx,mord)
- if at(upper(filetype(mdbf)), ".QBE,.QBO,.VUE") then}
- SET VIEW TO {mdbf}
- { if mndx then}
- SET INDEX TO {mndx}
- { endif
- if mord then}
- SET ORDER TO {mord}
- { endif
- else}
- USE {mdbf} {if mndx then}INDEX {mndx}{endif}
- { if mord then}
- SET ORDER TO {mord}
- { endif
- endif
- return;
- enddef
-
-
- include "cm_udf.cod" // Template language UDFs
- }
- // EOP QUICKAPP.COD
-